#include <stdio.h>
#include <sys/select.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

int main()
{
    //定义描述符集合并初始化
    fd_set rset;
    FD_ZERO(&rset);
    while(1)
    {
        struct timeval tm={3,0};
        int maxfd=1;
        FD_SET(0,&rset);
        int ret=select(maxfd,&rset,NULL,NULL,&tm);
        if(ret<0)
        {
            perror("select error\n");
            if(errno==EINTR) continue;
            return -1;
        }else if(ret==0)
        {
            printf("waittime out\n");
            continue;
        }else
        {
            for(int i=0;i<maxfd;++i)
            {
                if(FD_ISSET(0,&rset))
                {
                    char buf[1024];
                    int res=read(i,buf,1023);
                    if(res<0)
                    {
                        perror("read error");
                        return -1;
                    }
                    printf("%s\n",buf);
                }
            }
        }
    }
    return 0;
}